#!/bin/bash

COMMAND="$1"
KERNEL_VERSION="$2"
BOOT_DIR_ABS="$3"
KERNEL_IMAGE="$4"

ret=0
case "$COMMAND" in
    add)
        INITRD_IMAGE_PREGENERATED=${KERNEL_IMAGE%/*}/initrd
        if [[ -f ${INITRD_IMAGE_PREGENERATED} ]]; then
            # we found an initrd at the same place as the kernel
            # use this and don't generate a new one
            cp --reflink=auto "$INITRD_IMAGE_PREGENERATED" "$BOOT_DIR_ABS/initrd" \
                && chown root:root "$BOOT_DIR_ABS/initrd" \
                && chmod 0600 "$BOOT_DIR_ABS/initrd" \
                && exit 0
        fi

        if [[ -f /etc/kernel/cmdline ]]; then
            read -r -d '' -a BOOT_OPTIONS < /etc/kernel/cmdline
        elif [[ -f /usr/lib/kernel/cmdline ]]; then
            read -r -d '' -a BOOT_OPTIONS < /usr/lib/kernel/cmdline
        fi

        if ! [[ ${BOOT_OPTIONS[*]} ]]; then
            read -r -d '' -a BOOT_OPTIONS < /proc/cmdline
        fi

        unset noimageifnotneeded

        for ((i=0; i < "${#BOOT_OPTIONS[@]}"; i++)); do
            if [[ ${BOOT_OPTIONS[$i]} == root\=PARTUUID\=* ]]; then
                noimageifnotneeded="yes"
                break
            fi
        done
	dracut ${noimageifnotneeded:+--noimageifnotneeded} "$BOOT_DIR_ABS"/initrd "$KERNEL_VERSION"
        ret=$?
	;;
    remove)
        rm -f -- "$BOOT_DIR_ABS"/initrd
        ret=$?
	;;
esac
exit $ret
